This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button withi? the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

library("lattice")
package <U+393C><U+3E31>lattice<U+393C><U+3E32> was built under R version 3.6.3

Map of MA

Preprocessing

head(bos_crime$DISTRICT)
[1] Brighton     Dorchester   West Roxbury West Roxbury
[5] South Boston Dorchester  
12 Levels: Brighton Charlestown ... West Roxbury
#is.na(bos_crime)
sort(sapply(bos_crime, function(x) sum(is.na(x))), decreasing = TRUE)
     REPORTING_AREA                 Lat 
              20250               19999 
               Long            DISTRICT 
              19999               13239 
    INCIDENT_NUMBER        OFFENSE_CODE 
                  0                   0 
 OFFENSE_CODE_GROUP OFFENSE_DESCRIPTION 
                  0                   0 
           SHOOTING    OCCURRED_ON_DATE 
                  0                   0 
               YEAR               MONTH 
                  0                   0 
        DAY_OF_WEEK                HOUR 
                  0                   0 
           UCR_PART              STREET 
                  0                   0 
           Location 
                  0 

glimpse(bos_crime)
Rows: 319,073
Columns: 18
$ incident_number     <fct> I182070945, I182070943, I182070941, I182070940, I182070938, I182070936, I182070933, I182070932, ~
$ offense_code        <int> 619, 1402, 3410, 3114, 3114, 3820, 724, 3301, 301, 3301, 3301, 3114, 3108, 2647, 3201, 3006, 330~
$ offense_code_group  <fct> Larceny, Vandalism, Towed, Investigate Property, Investigate Property, Motor Vehicle Accident Re~
$ offense_description <fct> "LARCENY ALL OTHERS", "VANDALISM", "TOWED MOTOR VEHICLE", "INVESTIGATE PROPERTY", "INVESTIGATE P~
$ district            <fct> Brighton, Dorchester, West Roxbury, West Roxbury, South Boston, Dorchester, Mattapan, Mattapan, ~
$ reporting_area      <int> 808, 347, 151, 272, 421, 398, 330, 584, 177, 364, 913, 936, 139, 429, 469, NA, 341, 130, 901, 18~
$ shooting            <fct> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 
$ occurred_on_date    <date> 2018-09-02, 2018-08-21, 2018-09-03, 2018-09-03, 2018-09-03, 2018-09-03, 2018-09-03, 2018-09-03, ~
$ year                <int> 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,~
$ month               <int> 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, ~
$ day_of_week         <fct> Sunday, Tuesday, Monday, Monday, Monday, Monday, Monday, Monday, Monday, Monday, Monday, Monday,~
$ hour                <int> 13, 0, 19, 21, 21, 21, 21, 20, 20, 20, 19, 20, 19, 20, 14, 19, 18, 17, 19, 18, 18, 18, 18, 18, 1~
$ ucr_part            <fct> Part One, Part Two, Part Three, Part Three, Part Three, Part Three, Part One, Part Three, Part O~
$ street              <fct> LINCOLN ST, HECLA ST, CAZENOVE ST, NEWCOMB ST, DELHI ST, TALBOT AVE, NORMANDY ST, LAWN ST, MASSA~
$ lat                 <dbl> 42.35779, 42.30682, 42.34659, 42.33418, 42.27537, 42.29020, 42.30607, 42.32702, 42.33152, 42.295~
$ long                <dbl> -71.13937, -71.06030, -71.07243, -71.07866, -71.09036, -71.07159, -71.08273, -71.10555, -71.0708~
$ location            <fct> "(42.35779134, -71.13937053)", "(42.30682138, -71.06030035)", "(42.34658879, -71.07242943)", "(4~
$ Season              <chr> "Fall", "Summer", "Fall", "Fall", "Fall", "Fall", "Fall", "Fall", "Fall", "Fall", "Fall", "Fall"~
summary(bos_crime)
   incident_number    offense_code 
 I162030584:    13   Min.   : 111  
 I152080623:    11   1st Qu.:1001  
 I172013170:    10   Median :2907  
 I172096394:    10   Mean   :2318  
 I182065208:    10   3rd Qu.:3201  
 I162001871:     9   Max.   :3831  
 (Other)   :319010                 
                       offense_code_group
 Motor Vehicle Accident Response: 37132  
 Larceny                        : 25935  
 Medical Assistance             : 23540  
 Investigate Person             : 18750  
 Other                          : 18075  
 Drug Violation                 : 16548  
 (Other)                        :179093  
                            offense_description
 SICK/INJURED/MEDICAL - PERSON        : 18783  
 INVESTIGATE PERSON                   : 18754  
 M/V - LEAVING SCENE - PROPERTY DAMAGE: 16323  
 VANDALISM                            : 15154  
 ASSAULT SIMPLE - BATTERY             : 14791  
 VERBAL DISPUTE                       : 13099  
 (Other)                              :222169  
         district      reporting_area  shooting  
 Mattapan    : 49945   Min.   :  0.0    :318054  
 Dorchester  : 42530   1st Qu.:177.0   Y:  1019  
 West Roxbury: 41915   Median :344.0             
 Charlestown : 35717   Mean   :383.2             
 South Boston: 35442   3rd Qu.:544.0             
 (Other)     :100285   Max.   :962.0             
 NA's        : 13239   NA's   :20250             
 occurred_on_date          year          month      
 Min.   :2015-06-15   Min.   :2015   Min.   : 1.00  
 1st Qu.:2016-04-12   1st Qu.:2016   1st Qu.: 4.00  
 Median :2017-01-28   Median :2017   Median : 7.00  
 Mean   :2017-01-24   Mean   :2017   Mean   : 6.61  
 3rd Qu.:2017-11-05   3rd Qu.:2017   3rd Qu.: 9.00  
 Max.   :2018-09-03   Max.   :2018   Max.   :12.00  
                                                    
    day_of_week         hour             ucr_part     
 Friday   :48495   Min.   : 0.00             :    90  
 Monday   :45679   1st Qu.: 9.00   Other     :  1232  
 Saturday :44818   Median :14.00   Part One  : 61629  
 Sunday   :40313   Mean   :13.12   Part Three:158553  
 Thursday :46656   3rd Qu.:18.00   Part Two  : 97569  
 Tuesday  :46383   Max.   :23.00                      
 Wednesday:46729                                      
            street            lat       
 WASHINGTON ST : 14194   Min.   :-1.00  
               : 10871   1st Qu.:42.30  
 BLUE HILL AVE :  7794   Median :42.33  
 BOYLSTON ST   :  7221   Mean   :42.21  
 DORCHESTER AVE:  5149   3rd Qu.:42.35  
 TREMONT ST    :  4796   Max.   :42.40  
 (Other)       :269048   NA's   :19999  
      long                               location     
 Min.   :-71.18   (0.00000000, 0.00000000)   : 19999  
 1st Qu.:-71.10   (42.34862382, -71.08277637):  1243  
 Median :-71.08   (42.36183857, -71.05976489):  1208  
 Mean   :-70.91   (42.28482577, -71.09137369):  1121  
 3rd Qu.:-71.06   (42.32866284, -71.08563401):  1042  
 Max.   : -1.00   (42.25621592, -71.12401947):   898  
 NA's   :19999    (Other)                    :293562  

EDA

install.packages(c("DT"))
also installing the dependency <U+393C><U+3E31>jquerylib<U+393C><U+3E32>

  There is a binary version available but the
  source version is later:
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/jquerylib_0.1.4.zip'
Content type 'application/zip' length 525722 bytes (513 KB)
downloaded 513 KB
package ‘jquerylib’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\capob\AppData\Local\Temp\Rtmp0YFMUl\downloaded_packages
installing the source package <U+393C><U+3E31>DT<U+393C><U+3E32>

trying URL 'https://cran.rstudio.com/src/contrib/DT_0.20.tar.gz'
Content type 'application/x-gzip' length 1509840 bytes (1.4 MB)
downloaded 1.4 MB
* installing *source* package 'DT' ...
** package 'DT' successfully unpacked and MD5 sums checked
** using staged installation
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package 'DT'
    finding HTML links ... done
    DT-imports                              html  
    coerceValue                             html  
    dataTableAjax                           html  
    dataTableOutput                         html  
    datatable                               html  
    editData                                html  
    formatCurrency                          html  
    proxy                                   html  
    replaceData                             html  
    styleInterval                           html  
    tableHeader                             html  
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (DT)

The downloaded source packages are in
    ‘C:\Users\capob\AppData\Local\Temp\Rtmp0YFMUl\downloaded_packages’

?

Add a new chunk by clicking the Insert Chunk button on the toolbar or by p?essing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the conte?ts of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGk/IHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkN0cmwrU2hpZnQrRW50ZXIqLiANCg0KYGBge3J9DQpybShsaXN0PWxzKCkpDQpgYGANCg0KDQpgYGB7cn0NCg0KbGlicmFyeSgiZHBseXIiKQ0KbGlicmFyeSgidGlkeXZlcnNlIikNCmxpYnJhcnkoImNocm9uIikNCmluc3RhbGwucGFja2FnZXMoYygiZ2dyZXBlbCIpKQ0KbGlicmFyeSgiZ2dwbG90MiIpDQpsaWJyYXJ5KCJIbWlzYyIpDQpsaWJyYXJ5KCJmdW5Nb2RlbD9uZyIpDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInRpZHlyIikNCmxpYnJhcnkoInJtYXJrZG93biIpDQpsaWJyYXJ5KCJ2aXNkYXQiKQ0KbGlicmFyeSgibWFwcyIpDQpsaWJyYXJ5KCJsZWFmbGV0IikNCmxpYnJhcnkoInBsb3RseSIpDQogDQpsaWJyYXJ5KCJEYXRhRXhwbG9yZXIiKQ0KbGlicmFyeSgibGF0dGljZSIpDQpsaWJyYXJ5KCJncmlkRXh0cmEiKQ0KDQpgYGANCmBgYHtyfQ0KYm9zX2NyaW1lID0gcmVhZC5jc3YoJz9yaW1lLmNzdicpDQpoZWFkKGJvc19jcmltZSkNCmJvc19jcmltZQ0KDQpgYGANCk1hcCBvZiBNQQ0KDQpgYGB7cn0NCg0KZ2dwbG90KG1hcF9kYXRhKCJzdGF0ZSIsIHJlZ2lvbiA9ICJNYXNzYWNodXNldHRzIiksIGFlcyhsb25nLCBsYXQsIGdyb3VwID0gZ3JvdXApKSArDQogIGdlb21fcG9seWdvbihmaWxsID0gImdyYXkiLCBjb2xvdXIgPSAicmVkIikgKw0KICAjbGFicyhjYXB0aW9uPSAiRGF0YSBTb3VyY2UgOiBCb3N0b24gfEAgUGFua2FqIFNoYWgiKSsNCiAgY29vP2RfcXVpY2ttYXAoKQ0KDQpgYGANCg0KDQoNCg0KUHJlcHJvY2Vzc2luZyANCg0KYGBge3J9DQpkaXN0cmljdF9uYW1lID0gYygNCkExID0gJ0Rvd250b3duJywNCkExNT0gJ0NoYXJsZXN0b3duJywNCkE3PSAnRWFzdCBCb3N0b24nLA0KQjI9ICdSb3hidXJ5JywNCkIzPSAnTWF0dGFwYW4nLA0KQzY9ICdTb3V0aCBCb3N0b24nLA0KQzExPSAnRG9yY2hlc3RlcicsDQpEND0gJ1NvdXRoIEVuZCcsDQpEMTQ9ICdCcmlnaHRvbicsDQpFNT0gJ1dlc3QgUm94YnVyeScsDQpFMTM9ICdKYW1haWM/IFBsYWluJywNCkUxOD0gJ0h5ZGUgUGFyaycpDQoNCmJvc19jcmltZSRESVNUUklDVCA9IGFzLmZhY3RvcihkaXN0cmljdF9uYW1lWyhib3NfY3JpbWUkRElTVFJJQ1QpXSApDQpoZWFkKGJvc19jcmltZSRESVNUUklDVCkNCg0KDQoNCnNvcnQodGFibGUoYm9zX2NyaW1lJERJU1RSSUNUKSwgZGVjcmVhc2luZyA9IFRSVUUpDQoNCg0KYGBgDQoNCmBgYHtyfQ0KI2lzLm5hKGJvc19jcmltZSkNCnNvcnQoc2FwcGx5KGJvc19jcmltZSwgZnVuY3Rpb24oeCkgc3VtKGlzLm5hKHgpKT8sIGRlY3JlYXNpbmcgPSBUUlVFKQ0KDQoNCg0KYGBgDQoNCmBgYHtyfQ0KYm9zX2NyaW1lICU+JQ0KICAgIGZpbHRlcihvY2N1cnJlZF9vbl9kYXRlIDwgeW1kKCIyMDE4LTEyLTIxIikpICU+JSANCiAgICBncm91cF9ieShvY2N1cnJlZF9vbl9kYXRlKSAlPiUNCiAgICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lDQogICAgZ2dwbG90KGFlcyh4ID0gb2NjdXJyZWRfb25fZGF0ZSwgeSA9IG4pKSArDQogICAgICAgIGdlb21fcG9pbnQoKSArDQogICAgbGFicyh0aXRsZSA9ICIgTj9tYmVyIG9mIEluY2lkZW50cyBSZXBvcnRlZCBpbiBlYWNoIHllYXIiLA0KICAgICAgeSA9ICdOdW1iZXIgb2YgSW5jaWRlbnRzIFJlcG9ydGVkJywgDQogICAgICAgICB4ID0gJ0RhdGUnKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgDQpgYGANCg0KDQpgYGB7cn0NCmJvc19jcmltZSA9IGNsZWFuX25hbWVzKGJvc19jcmltZSkNCmhlYWQoYm9zX2NyaW1lKQ0KYGBgDQoNCg0KYGBge3J9DQpnbGltcHNlKGJvc18/cmltZSkNCmBgYA0KDQoNCmBgYHtyfQ0KYm9zX2NyaW1lJGluY2lkZW50X251bWJlciA9IGFzLmZhY3Rvcihib3NfY3JpbWUkaW5jaWRlbnRfbnVtYmVyKQ0KYm9zX2NyaW1lJG9mZmVuc2VfY29kZV9ncm91cCA9IGFzLmZhY3Rvcihib3NfY3JpbWUkb2ZmZW5zZV9jb2RlX2dyb3VwKQ0KYm9zX2NyaW1lJG9mZmVuc2VfZGVzY3JpcHRpb24gPSBhcy5mYWN0b3IoYm9zX2NyaW1lJG9mZmVuc2VfZGVzY3JpcHRpb24pDQpib3NfY3JpbWUkZGlzdHJpY3QgPSBhcy5mYWN0P3IoYm9zX2NyaW1lJGRpc3RyaWN0KQ0KYm9zX2NyaW1lJHNob290aW5nID0gYXMuZmFjdG9yKGJvc19jcmltZSRzaG9vdGluZykNCmJvc19jcmltZSRvY2N1cnJlZF9vbl9kYXRlID0gYXMuRGF0ZShib3NfY3JpbWUkb2NjdXJyZWRfb25fZGF0ZSkNCmJvc19jcmltZSRkYXlfb2Zfd2VlayA9IGFzLmZhY3Rvcihib3NfY3JpbWUkZGF5X29mX3dlZWspDQpib3NfY3JpbWUkdWNyX3BhcnQgPSBhcy5mYWN0b3IoYm9zX2NyaW1lJHVjcl9wYXJ0KQ0KYm9zX2NyaW1lJD90cmVldCA9IGFzLmZhY3Rvcihib3NfY3JpbWUkc3RyZWV0KQ0KYm9zX2NyaW1lJGxvY2F0aW9uID0gYXMuZmFjdG9yKGJvc19jcmltZSRsb2NhdGlvbikNCmBgYA0KDQoNCg0KDQoNCmBgYHtyfQ0Kc3VtbWFyeShib3NfY3JpbWUpDQpgYGANCg0KRURBDQoNCmBgYHtyfQ0KDQojQ3JlYXRlIHNlYXNvbnMNCmJvc19jcmltZSA9IGJvc19jcmltZSAlPiUgbXV0YXRlKFNlYXNvbiA9IGlmZWxzZShtb250aCAlaW4lIGMoNiw3LDgpLCAiU3VtbWVyIiwNCiAgICAgICAgICAgICAgICAgICAgPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKG1vbnRoICVpbiUgYyg5LDEwLDExKSwgIkZhbGwiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShtb250aCAlaW4lIGMoMTIsMSwyKSwgIldpbnRlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTcHJpbmciKSkpKQ0KaGVhZCg/b3NfY3JpbWUpDQoNCg0KDQoNCmBgYA0KDQoNCg0KYGBge3J9DQoNCnBsb3RfY3JpbWVfb2ZmZW5zZV9zZWFzb24gPSBwbG90X2x5KGJvc19jcmltZSwgeCA9IH4gU2Vhc29uLCBjb2xvciA9IH4gU2Vhc29uKSAlPiUgDQogIGFkZF9oaXN0b2dyYW0oKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIkNyaW1lcyBpbiBib3N0b24gYnkgc2Vhc29uIiwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiU2Vhc29uIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiQ291bnQiKSk/ICApDQoNCnBsb3RfY3JpbWVfb2ZmZW5zZV9zZWFzb24NCmBgYA0KDQoNCg0KYGBge3J9DQpxcGxvdChsb25nLCBsYXQsIGRhdGE9IGJvc19jcmltZSwgY29sb3I9ZGlzdHJpY3QsIGdlb209J3BvaW50JywgeGxpbSA9IGMoLTcxLjIsLTcwLjk1KSwgeWxpbT0gYyg0Mi4yMiw0Mi40KSkrDQp0aGVtZV9idyhiYXNlX3NpemU9MTUpKw0KICBnZW9tX3BvaW50KHNpemUgPSAyKSsNCiAgbGFicyh0aXRsZT0iQ3JpbWUgTWFwcGluZyBieSBkaXN0cmljdCIseD0iTG9uZ3RpdHVkPyIsIHk9J0xhdGl0dWRlJywgY29sb3I9J0Rpc3RyaWN0JykNCmBgYA0KDQoNCmBgYHtyfQ0KaW5zdGFsbC5wYWNrYWdlcyhjKCJEVCIpKQ0KbGlicmFyeShEVCkNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KdHlwZV9jcmltZSA9IHNvcnQodGFibGUoYm9zX2NyaW1lJG9mZmVuc2VfY29kZV9ncm91cCksZGVjcmVhc2luZyA9IFRSVUUpDQp0eXBlX2NyaW1lID0gZGF0YS5mcmFtZSh0eXBlX2NyaW1lW3R5cGVfY3JpbWUgPiAxMDAwMF0pDQpjb2xuYW1lcyh0eXBlX2NyaW1lKSA9IGMoP0NhdGVnb3J5IiwgIkZyZXF1ZW5jeSIpDQp0eXBlX2NyaW1lJFBlcmNlbnRhZ2UgPSB0eXBlX2NyaW1lJEZyZXF1ZW5jeSAvIHN1bSh0eXBlX2NyaW1lJEZyZXF1ZW5jeSkNCmRhdGF0YWJsZSh0eXBlX2NyaW1lLCBvcHRpb25zID0gbGlzdChzY3JvbGxYPSc0MDBweCcpKQ0KDQpoZWFkKHR5cGVfY3JpbWUpDQoNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KGdncmVwZWwpDQpiYXJfcCA9IGdncGxvdCh0eXBlX2NyaW1lLCBhZXMoeD1DYXRlZ29yeSwgeT1GcmVxdWU/Y3ksIGZpbGw9Q2F0ZWdvcnkpKSArIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgKyANCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF9ibGFuaygpKSArIA0KICBnZW9tX3RleHRfcmVwZWwoZGF0YT10eXBlX2NyaW1lLCBhZXMobGFiZWw9Q2F0ZWdvcnkpKSsNCiAgIGxhYnModGl0bGU9Ik9jY3VyZW5jZSBvZiBEaWZmZXJlbnQgQ3JpbWVzIix4PSJDcmltZSBUeXBlcyIsIHk9J0NyaW1lIEZyZXEuJywgY29sb3I9J1JlZ2lvbicpDQpiYXJfcA0KDQoNCmBgYA0KPw0KDQpgYGB7cn0NCmxpYnJhcnkoZHBseXIpDQoNCmJvc19kYWlseSA9IGJvc19jcmltZSAlPiUNCiAgbXV0YXRlKERhdGUgPSBhcy5EYXRlKG9jY3VycmVkX29uX2RhdGUsICIlbS8lZC8lWSIpKSAlPiUNCiAgZ3JvdXBfYnkoRGF0ZSkgJT4lDQogIHN1bW1hcml6ZShjb3VudCA9IG4oKSkgJT4lDQogIGFycmFuZ2UoRGF0ZSkNCg0KaGVhZChib3NfZGFpbHkpDQoNCg0KDQpsaWJyYXJ5KHNjYWxlcykNCnBsb3RfZGFpbHkgPSBnZ3Bsb3QoYm9zX2RhaWx5LCBhZXMoeCA9IERhdGUsP3kgPSBjb3VudCkpICsNCiAgZ2VvbV9saW5lKGNvbG9yID0gInJlZCIsIHNpemUgPSAwLjEpICsNCiAgZ2VvbV9zbW9vdGgoY29sb3IgPSAiYmxhY2siKSArDQogIHNjYWxlX3hfZGF0ZShicmVha3MgPSBkYXRlX2JyZWFrcygiMSB5ZWFyIiksIGxhYmVscyA9IGRhdGVfZm9ybWF0KCIlWSIpKSArDQogIGxhYnMoeCA9ICJEYXRlIG9mIENyaW1lIiwgeSA9ICJOdW1iZXIgb2YgQ3JpbWVzIiwgdGl0bGUgPSAiRGFpbHkgQ3JpbWVzIGluIEJvc3RvbiBmcm9tIDIwPzYgLSAyMDE4IikNCnBsb3RfZGFpbHkNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCmJhcl9wID0gZ2dwbG90KHR5cGVfY3JpbWUsIGFlcyh4PSIiLCB5PVBlcmNlbnRhZ2UsIGZpbGw9Q2F0ZWdvcnkpKSArIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgDQpwaWUgPSAgYmFyX3AgKyBjb29yZF9wb2xhcigieSIpIA0KcGllDQpgYGANCg0KDQoNCg0KDQoNCkFkZCBhIG5ldyBjaHVuayBieSBjbGlja2luZyB0aGUgKkluc2VydCBDaHVuayogYnV0dG9uIG9uIHRoZSB0b29sYmFyIG9yIGJ5IHA/ZXNzaW5nICpDdHJsK0FsdCtJKi4NCg0KV2hlbiB5b3Ugc2F2ZSB0aGUgbm90ZWJvb2ssIGFuIEhUTUwgZmlsZSBjb250YWluaW5nIHRoZSBjb2RlIGFuZCBvdXRwdXQgd2lsbCBiZSBzYXZlZCBhbG9uZ3NpZGUgaXQgKGNsaWNrIHRoZSAqUHJldmlldyogYnV0dG9uIG9yIHByZXNzICpDdHJsK1NoaWZ0K0sqIHRvIHByZXZpZXcgdGhlIEhUTUwgZmlsZSkuDQoNClRoZSBwcmV2aWV3IHNob3dzIHlvdSBhIHJlbmRlcmVkIEhUTUwgY29weSBvZiB0aGUgY29udGU/dHMgb2YgdGhlIGVkaXRvci4gQ29uc2VxdWVudGx5LCB1bmxpa2UgKktuaXQqLCAqUHJldmlldyogZG9lcyBub3QgcnVuIGFueSBSIGNvZGUgY2h1bmtzLiBJbnN0ZWFkLCB0aGUgb3V0cHV0IG9mIHRoZSBjaHVuayB3aGVuIGl0IHdhcyBsYXN0IHJ1biBpbiB0aGUgZWRpdG9yIGlzIGRpc3BsYXllZC4NCg==